package ar.com.tracking.navegacion_core.model;


/**
 *
 * @author Cuni
 */
/*Permite describir el estado en el que se encuentra una Order, junto con el comportamiento que tiene la misma un momento dado*/
public abstract class OrderState {
    
    /**
    * Overriden by Development class, Suspended class and Sended class
    * 
    * @param Order
    * @throws InvalidStateOperationException
    */
    public void cancelOrder(Order order) throws UnsupportedOperationException {
		throw new UnsupportedOperationException();			
	}     
    
    /**
    * Overriden by Suspended class
    * 
    * @param Order
    * @throws InvalidStateOperationException
    */
    public void reviewOrder(Order order)throws UnsupportedOperationException {
            throw new UnsupportedOperationException();			
    }
    
    /**
    * Overriden by Development 
    * 
    * @param Order
    * @throws InvalidStateOperationException
    */
    public void sendOrder(Order order)throws UnsupportedOperationException {
            throw new UnsupportedOperationException();			
    }
    
     /**
    * Overriden by Development class and Sended class
    * 
    * @param Order
    * @throws InvalidStateOperationException
    */
    public void suspendOrder(Order order, OrderState previousState)throws UnsupportedOperationException {
            throw new UnsupportedOperationException();
    }
    
    public String toString()throws UnsupportedOperationException {
            throw new UnsupportedOperationException();
    }
       
}
